<?php
class Oportunidades_model extends CI_Model
{
	public function __construct()
	{
		parent::__construct();
	}
	
	public function getOpportunityDetail($id)
	{
        $this->db->flush_cache();
		$this->db->start_cache();

		$this->db->select("	tb_oportunidades.id_oportunidade AS id_oportunidade,
                        	tb_oportunidades.descricao AS descricao,
                        	tb_contas.nome_fantasia AS conta,
                        	tb_oportunidades.valor AS valor,
                        	tb_oportunidades.data_fechamento AS data_fechamento,
                        	tb_fases_oportunidades.descricao AS fase,
                        	tb_tipos_oportunidades.descricao AS tipo,
                        	tb_oportunidades.probabilidade AS probabilidade,
                        	tb_origens_oportunidades.descricao AS origem,
                        	tb_campanhas.nome AS campanha,
                        	tb_oportunidades.observacao AS observacao");
		$this->db->from("tb_oportunidades");
		$this->db->join("tb_contas", "tb_contas.id_conta = tb_oportunidades.id_conta_fk");
		$this->db->join("tb_fases_oportunidades", "tb_fases_oportunidades.id_fase_oportunidade = tb_oportunidades.id_fase_oportunidade_fk");
		$this->db->join("tb_tipos_oportunidades", "tb_tipos_oportunidades.id_tipo_oportunidade = tb_oportunidades.id_tipo_oportunidade_fk", "left");
		$this->db->join("tb_origens_oportunidades", "tb_origens_oportunidades.id_origem_oportunidade = tb_oportunidades.id_origem_oportunidade_fk", "left");
		$this->db->join("tb_campanhas", "tb_campanhas.id_campanha = tb_oportunidades.id_campanha_fk", "left");
		$this->db->where("tb_oportunidades.id_oportunidade =", $id);
		
		$query = $this->db->get("oportunidades");
		$result = $query->result();
        $this->db->flush_cache();
		return $result;		
		
	}
	
	public function getContactsOportunities($objSearch=NULL, $data)
	{
        $this->db->flush_cache();
		$this->db->start_cache();
		if (!is_null($objSearch))
		{
			foreach ($objSearch->rules as $item)
			{
				switch ($item->op)
				{
					case "eq":
						if ($objSearch->groupOp == "AND")
						{
							$this->db->where($item->field." =", $item->data);
						}
						else
						{
							$this->db->or_where($item->field." =", $item->data);
						}
						break;
					case "ne":
						if ($objSearch->groupOp == "AND")
						{
							$this->db->where($item->field." <>", $item->data);
						}
						else
						{
							$this->db->or_where($item->field." <>", $item->data);
						}
						break;
					case "lt":
						if ($objSearch->groupOp == "AND")
						{
							$this->db->where($item->field." <", $item->data);
						}
						else
						{
							$this->db->or_where($item->field." <", $item->data);
						}
						break;
					case "le":
						if ($objSearch->groupOp == "AND")
						{
							$this->db->where($item->field." <=", $item->data);
						}
						else
						{
							$this->db->or_where($item->field." <=", $item->data);
						}
						break;
					case "gt":
						if ($objSearch->groupOp == "AND")
						{
							$this->db->where($item->field." >", $item->data);
						}
						else
						{
							$this->db->or_where($item->field." >", $item->data);
						}
						break;
					case "ge":
						if ($objSearch->groupOp == "AND")
						{
							$this->db->where($item->field." >=", $item->data);
						}
						else
						{
							$this->db->or_where($item->field." >=", $item->data);
						}
						break;
					case "bw":
						if ($objSearch->groupOp == "AND")
						{
							$this->db->like($item->field, $item->data,'after');
						}
						else
						{
							$this->db->or_like($item->field, $item->data,'after');
						}
						break;
					case "bn":
						if ($objSearch->groupOp == "AND")
						{
							$this->db->not_like($item->field, $item->data,'after');
						}
						else
						{
							$this->db->or_not_like($item->field, $item->data,'after');
						}
						break;
					case "in":
						$arr_values = explode(";", $item->data);
						if ($objSearch->groupOp == "AND")
						{
							$this->db->where_in($item->field, $arr_values);
						}
						else
						{
							$this->db->or_where_in($item->field, $arr_values);
						}
						break;
					case "ni":
						$arr_values = explode(";", $item->data);
						if ($objSearch->groupOp == "AND")
						{
							$this->db->where_not_in($item->field, $arr_values);
						}
						else
						{
							$this->db->or_where_not_in($item->field, $arr_values);
						}
						break;
					case "ew":
						if ($objSearch->groupOp == "AND")
						{
							$this->db->like($item->field, $item->data,'before');
						}
						else
						{
							$this->db->or_like($item->field, $item->data,'before');
						}
						break;
					case "en":
						if ($objSearch->groupOp == "AND")
						{
							$this->db->not_like($item->field, $item->data,'before');
						}
						else
						{
							$this->db->or_not_like($item->field, $item->data,'before');
						}
						break;
					case "cn":
						if ($objSearch->groupOp == "AND")
						{
							$this->db->like($item->field, $item->data,'both');
						}
						else
						{
							$this->db->or_like($item->field, $item->data,'both');
						}
						break;
					case "nc":
						if ($objSearch->groupOp == "AND")
						{
							$this->db->not_like($item->field, $item->data,'both');
						}
						else
						{
							$this->db->or_not_like($item->field, $item->data,'both');
						}
						break;
				}
			}
		}
		$page = $data['page'];
		$limit = $data['rows'];
		$sidx = $data['sidx'];
		$sord = $data['sord'];
		
		$this->db->select("	tb_oportunidades_contatos.id_oportunidade_contato AS id_oportunidade_contato,
                        	tb_contatos.nome AS nome,
                        	tb_contas.nome_fantasia AS conta,
                        	tb_papeis_contatos.descricao AS papel,
                        	tb_contatos.email AS email,
                        	tb_contatos.telefone AS telefone");
		$this->db->from("tb_contatos");
		$this->db->join("tb_oportunidades_contatos", "tb_oportunidades_contatos.id_contato_fk = tb_contatos.id_contato");
		$this->db->join("tb_contas", "tb_contas.id_conta = tb_contatos.id_conta_fk");
		$this->db->join("tb_papeis_contatos", "tb_papeis_contatos.id_papel_contato = tb_oportunidades_contatos.id_papel_contato_fk", "left");
		$this->db->where("tb_oportunidades_contatos.flag_deletado =", "N");
		
		$count = $this->db->count_all_results();
		
		if( $count > 0 && $limit > 0) { 
              $total_pages = ceil($count/$limit); 
        } else { 
              $total_pages = 0; 
        } 
		if ($page > $total_pages) $page=$total_pages;
		$start = $limit * $page - $limit;
		if($start <0) $start = 0;
		$this->db->order_by($sidx , $sord);
		
		$this->db->limit($limit, $start);

		$query = $this->db->get("contatos");
		
		$data_result['result'] = $query->result();
        $data_result['page'] = $page;
        $data_result['totalpages'] = $total_pages;
        $data_result['totalrecords']=$count;

        $this->db->flush_cache();
		return $data_result;	
	}
}